package com.xs.tool.common.sync;

/**
 * 主调程序
 */
public class CallbackRequest implements CallBackInterface {
    private CallbackResponse callbackResponse;
    public CallbackRequest(CallbackResponse callbackResponse) {
        this.callbackResponse = callbackResponse;
    }
    //主调需要解决一个问题，所以他把问题交给被调处理，被调单独创建一个线程，不影响主调程序的运行
    public void request(final String question){
        System.out.println("主调程序问了一个问题");
        new Thread(()->{
            //B想要帮A处理东西，就必须知道谁让自己处理的，所以要传入a，也要知道a想处理什么，所以要传入question
            callbackResponse.handler(this, question);
        }).start();
        //A把要处理的事情交给b之后，就可以自己去玩耍了，或者去处理其他事情
        afterAsk();
    }
    private void afterAsk(){
        System.out.println("主调程序继续处理其他事情");
    }
    @Override
    public void solve(String result) {
        System.out.println("被调程序接到答案后进行处理" + result);
    }
}
